home *** CD-ROM | disk | FTP | other *** search
- (connectory)
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = family;
- hints.ai_socktype = SOCK_STREAM;
- if ((err = Getaddrinfo(host, port, &hints, &results)))
- return -5;
- ---
- (inet_vhostsockaddr)
- /*
- * Can it really be this simple?
- */
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = family;
- hints.ai_socktype = SOCK_STREAM;
- if (port != -1)
- {
- hints.ai_flags = AI_PASSIVE;
- snprintf(p_port, 12, "%hu", port);
- p = p_port;
- }
-
- if ((err = Getaddrinfo(LocalHostName, p, &hints, &res)))
- return -10;
- ---
- (inet_strton -- <INTERESTING>)
- AI_NUMERICHOST
- memset(&hints, 0, sizeof(hints));
- hints.ai_flags = flags;
- hints.ai_family = family;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_protocol = 0;
-
- if ((retval = Getaddrinfo(host, port, &hints, &results))) {
- yell("getaddrinfo(%s): %s", host, gai_strerror(retval));
- return -5;
- }
- ---
- (wserv)
- memset(&hints, 0, sizeof(hints));
- hints.ai_flags = 0;
- hints.ai_family = AF_INET;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_protocol = 0;
-
- if ((retval = getaddrinfo(host, port, &hints, &results))) {
- yell("getaddrinfo(%s): %s", host, gai_strerror(retval));
- my_exit(6);
- }
-
-
-
-
-
-
-
-
-
- -------------------------------------------------------------------------------
- This document details the conversion of EPIC into an IPv6 program. If this
- document can be made use to anyone else, they are welcome to it.
-
- EPIC is a particularly interesting case study for IPv4 to IPv6 transition
- because it touches every direction of every domain. It is (obviously)
- an IPv4 client, but it is also an IPv4 server (DCCs). It is a Unix Domain
- client, and it can be a Unix Domain server (but this is not in use).
-
- Fortunately for us, all of the networking related code is contained in three
- subsystems (/DCC, /SERVER, and /WINDOW CREATE), and five modules: dcc.c,
- network.c, screen.c, server.c, and wserv.c.
-
- EPIC has traditionally retained and stored data on an "ad hoc" basis. Whenever
- a piece of data is needed, it is retrieved from whatever place is the most
- convenient and stashed away in a variable. This means that some data we keep
- in multiple places (redundancy). An example: the result of a hostname lookup
- is an in_addr which we store as the "remote address" of the peer. After the
- connect(2), getpeername(2) returns a struct sockaddr which also contains this
- "remote address". Now we have two copies of the same information. The
- maintainer then is left to wonder why we have two different copies and what
- each copy is to be used for.
-
- The first thing to do is take a catalog of all the data items used to store
- networking information. This includes in_addr's, sockaddr's, and what they
- are used for and why they are kept. We can then design a more efficient
- and practical list of data items stored.
-
- CATALOG OF IPV4 DATA:
- ---------------------
- dcc.c
- =====
- in_addr DCC_list.remote
- u_short DCC_list.remport
- in_addr DCC_list.local_addr
- u_short DCC_list.local_port
-
- hostent dcc_raw_connect.hp
- in_addr dcc_send_booster_ctcp.myip
- hostent register_dcc_offer.hostent_fromhost
- sockaddr_in process_incoming_chat.remaddr
- sockaddr_in process_incoming_listen.remaddr
- hostent process_incoming_listen.hp
- sockaddr_in process_outgoing_file.remaddr
- sockaddr_in dcc_open.remaddr
-
- server.c/h
- ========
- in_addr Server.local_addr
- sockaddr_in Server.local_sockname;
- sockaddr_in Server.remote_sockname;
- in_addr Server.uh_addr;
-
- sockaddr_in connect_to_server.localaddr
- sockaddr_in connect_to_server.remaddr
- in_addr get_server_local_addr (servnum)
- in_addr get_server_uh_addr (servnum)
-
- irc.c
- =====
- in_addr LocalHostAddr;
- hostent parse_args.hp
-
- functions.c
- ===========
- in_addr function_iptolong.addr
- in_addr function_longtoip.addr
-
- network.c
- =========
- [include here]
-
- commands.c
- ==========
- hostent e_hostname.hp
-
- CATALOG OF IPV4 FUNCTION CALLS:
- -------------------------------
- inet_aton
- =========
- dcc.c register_dcc_offer
- functions.c function_iptolong
- network.c connect_by_number
- network.c lame_external_resolv
-
- inet_ntoa
- =========
- dcc.c dcc_open
- dcc.c register_dcc_offer
- dcc.c process_incoming_chat
- dcc.c process_incoming_listen
- dcc.c process_outgoing_file
- functions.c function_longtoip
-
- gethostbyname
- =============
- commands.c e_hostname
- dcc.c dcc_raw_connect
- dcc.c register_dcc_offer
- irc.c parse_args
- network.c lookup_host
-
- gethostbyaddr
- =============
- dcc.c process_incoming_listen
- network.c lookup_ip (via resolv() and ip_to_host())
-
-